package com.sybil.spa.dominio;

import java.io.Serializable;

public class Usuario implements Serializable, Comparable<Usuario> {

   private static final long serialVersionUID = 1L;
   private String clave;
   private String nombre;
   private String apellidos;
   private String email;
   private String descripcion;
   private String oficina;
   private String compania;
   private String departamento;
   private String puesto;
   private long numeroEmpleado;
   private boolean activo;
   private Usuario jefe;

   public long getNumeroEmpleado() {
      return numeroEmpleado;
   }

   public void setNumeroEmpleado(long numeroEmpleado) {
      this.numeroEmpleado = numeroEmpleado;
   }

   public String getClave() {
      return clave;
   }

   public String getValorMuestra() {
      return nombre + " " + apellidos + " (" + clave + ")";
   }

   public void setClave(String clave) {
      this.clave = clave;
   }

   public String getApellidos() {
      return apellidos;
   }

   public void setApellidos(String apellidos) {
      this.apellidos = apellidos;
   }

   public String getNombre() {
      return nombre;
   }

   public void setNombre(String nombre) {
      this.nombre = nombre;
   }

   public String getEmail() {
      return email;
   }

   public void setEmail(String email) {
      this.email = email;
   }

   public String getDescripcion() {
      return descripcion;
   }

   public void setDescripcion(String descripcion) {
      this.descripcion = descripcion;
   }

   public String getOficina() {
      return oficina;
   }

   public void setOficina(String oficina) {
      this.oficina = oficina;
   }

   public String getCompania() {
      return compania;
   }

   public void setCompania(String compania) {
      this.compania = compania;
   }

   public String getDepartamento() {
      return departamento;
   }

   public void setDepartamento(String departamento) {
      this.departamento = departamento;
   }

   public String getPuesto() {
      return puesto;
   }

   public void setPuesto(String puesto) {
      this.puesto = puesto;
   }

   public Usuario getJefe() {
      return jefe;
   }

   public void setJefe(Usuario jefe) {
      this.jefe = jefe;
   }

   public boolean isActivo() {
      return activo;
   }

   public void setActivo(boolean activo) {
      this.activo = activo;
   }

   @Override
   public int hashCode() {
      int hash = 0;
      hash += (clave != null ? clave.hashCode() : 0);
      return hash;
   }

   @Override
   public boolean equals(Object object) {
      if (!(object instanceof Usuario)) {
         return false;
      }
      Usuario other = (Usuario) object;
      if ((this.clave == null && other.clave != null) || (this.clave != null && !this.clave.equals(other.clave))) {
         return false;
      }
      return true;
   }

   @Override
   public String toString() {
      return "Usuario[ clave=" + clave + " ]";
   }

   @Override
   public int compareTo(Usuario other) {
      int last = this.nombre.compareTo(other.nombre);
      return last == 0 ? this.apellidos.compareTo(other.apellidos) : last;
   }
}
